package com.cook.service;

import com.cook.dto.recipes.RecipesDTO;
import com.cook.entity.Recipes;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cook.vo.recipes.RecipeDetailVO;

import java.util.Map;

/**
* @author black-white spider
* @description 针对表【recipes(食谱表)】的数据库操作Service
* @createDate 2025-10-27 19:55:23
*/
public interface RecipesService extends IService<Recipes> {

        /**
         * 根据用户ID分页查询食谱列表
         * @param userId 用户ID
         * @param pageNum 页码
         * @param pageSize 每页大小
         * @return 分页结果
         */
         Map<String, Object> getRecipesByUserIdWithPage(Long userId, Integer pageNum, Integer pageSize);

        /**
         * 分页查询所有食谱
         * @param pageNum 页码
         * @param pageSize 每页数量
         * @return 分页结果
         */
        Map<String, Object> getAllRecipesWithPage(Integer pageNum, Integer pageSize);

        /**
         * 根据ID查询食谱详情
         * @param recipeId 食谱ID
         * @return 食谱详情
         */
        RecipeDetailVO getRecipeById(Long recipeId);

        /**
         * 根据标题模糊查询食谱
         * @param title 标题关键词
         * @param pageNum 页码
         * @param pageSize 每页数量
         * @return 分页结果
         */
        Map<String, Object> searchRecipesByTitle(String title, Integer pageNum, Integer pageSize);

        /**
         * 创建食谱
         * @param recipesDTO 食谱DTO
         * @return 创建的食谱ID
         */
        Long createRecipe(RecipesDTO recipesDTO);

        /**
         * 更新食谱
         * @param recipesDTO 食谱DTO
         * @return 是否更新成功
         */
        boolean updateRecipe(RecipesDTO recipesDTO);

        /**
         * 删除食谱（安全删除，验证用户权限）
         * @param recipeId 食谱ID
         * @param userId 用户ID
         * @return 是否删除成功
         */
        boolean deleteRecipe(Long recipeId, Long userId);

}
